<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <!-- 
        1. 对象
            在Js中, 可以说"一切皆对象"
            例如: 布尔,数字,字符串用 new 来定义就是对象
                  日期, 数学也是对象
                  数组, 函数也是对象
                  

        1. 对象组成
            由"属性"和"方法"组成
            属性: 对象有什么
            方法: 对象会什么


        2. 对象定义
            * Json创建            (店长推荐)
                var 变量 = {
                    属性名: 属性值,
                    属性名: 属性值,
                    ...
                    方法名: function(){},
                    方法名: function(){},
                    ...
                }

                注: 在Json中, 属性名:属性值 也被称之为:  键:值,  俗称"键值对"

            * 对象构造器
                对象变量 = new Object();

                对象变量.属性名 = 属性值;
                对象变量.属性名 = 属性值;
                ...

                对象变量.方法名 = function(){}
                对象变量.方法名 = function(){}
                ...

            * 匿名构造器
                对象变量 = new function(){
                    this.属性名 = 属性值;
                    this.属性名 = 属性值;
                    ...

                    this.方法名 = function(){}
                    this.方法名 = function(){}
                    ...
                }

            * 自定义构造器
                function 自定义对象名(){
                    this.属性名 = 属性值;
                    this.属性名 = 属性值;
                    ...

                    this.方法名 = function(){}
                    this.方法名 = function(){}
                    ...
                }

                对象变量 = new 自定义对象名()
    -->


    <script>
        
        var x = [ 10 , 20 ,30];
        var y = new Array(10,20,30);
        console.log(x);
        console.log(y);
        console.log('----------------');

        var x = 100;
        var y = new Number(100);
        console.log(x, typeof x);
        console.log(y, typeof y);
        console.log(x == y);
        console.log('--------------------------');
    </script>

    <script>
        
        var dog = ['旺财', '二哈', '哮天犬'];
        console.log( dog.length);

        console.log( dog.join('_') );
    </script>

    <script>
        var 学员1 = {
            name: '乐海波',
            age: 18,
            job: '老板',
            sendMoney: function(){
                console.log('见到一个人就发个红包, 红包厚度都是按米算');
            },

            getMoney: function(){
                console.log('见到赵云鹏一次, 就要百来万');
            }
        }

        console.log( 学员1.name );
        console.log(学员1.age);

        学员1.sendMoney();
        学员1.getMoney();
        console.log('-------------');


        //对象构造器
            var 学员2 = new Object();
            学员2.name = '小程';
            学员2.age  = 19;
            学员2.skill1 = function(){
                console.log('葵花宝典');
            }

            学员2.skill2 = function(){
                console.log('辟邪剑谱');
            }

            console.log( 学员2.name );
            console.log( 学员2.age );
            学员2.skill1();
            学员2.skill2();
            console.log('------------------');


            var 学员3 = new function(){
                this.name = '姚某人';
                this.age = 20;

                this.skill = function(){
                    console.log('撸猫');
                }
                this.skill2 = function(){
                    console.log('撸铁');
                }
            }

            console.log( 学员3.name );
            console.log( 学员3.age );
            学员3.skill1();
            学员3.skill2();


        //自定义构造器
        
            function Cat(){
                this.name = '加菲猫';
                this.age = 90;
                this.eat = function(){
                    console.log('吃鱼');
                }
                this.play = function(){
                    console.log('调戏二哈');
                }
            }


            var z = Cat;
            var x = new Cat();

            console.log(z, typeof z);
            console.log(x, typeof x);
    </script>
</body>
</html>